iT邦幫忙

2023 iThome 鐵人賽

0
DevOps

跟著菜鳥手把手用Docker建立服務系列 第 11

Day11 - 菜鳥們學以致用DockerFile MySql篇

  • 分享至 

  • xImage
  •  

 學了就要懂的實用啊,不然只光學不去動手做,這樣菜鳥永遠翻不了身,菜鳥永遠就是菜鳥/images/emoticon/emoticon15.gif


在設計 MySql 的 Dcokerfile 之前,先想想看需求是什麼,這樣才能邊設計邊找資源
需求:

  1. 我要建立一個 Database
    • Database Name = ItDB
    • User = ItUser
    • Password = ***** 自己設定密碼
    • Root Password = ***** 自己設定密碼
  2. 我要設定Log相關參數,方便觀察紀錄

建立一個名為Dockerfile

FROM mysql:latest

# 設定環境變數
ENV MYSQL_DATABASE=ItDB
ENV MYSQL_USER=ITUser
ENV MYSQL_PASSWORD=*********
ENV MYSQL_ROOT_PASSWORD=*********

# COPY my.cnf /etc/my.cnf
RUN echo '[mysqld]' >> /etc/my.cnf  \
    && echo "general_log = 1" >> /etc/my.cnf \
    && echo "general_log_file = /var/log/mysqld.log" >> /etc/my.cnf \
    && echo "log_output = file" >> /etc/my.cnf
    
# 指定路徑
WORKDIR /var/lib/mysql

# 指定容器運行時使用的預設命令
CMD ["mysqld"]
  • 如果想省事設定Log相關參數,可以直接在本機建立一個 my.cnf 並且寫關參數,然後用COPY本機的my.cnf到Container 的路徑 /etc/my.cnf

    my.cnf

     [mysqld]
     general_log = 1
     general_log_file = /var/log/mysqld.log
     log_output = file
    

下docker指令建立Image

docker build -t "Image Name" .

*看到指令最後有個 " . " 那個指的是當下路徑的 Dockerfile
*如果不想命名為 Dockerfile 想要自己名命也可以那docker指令如下
docker build -t "Image Name" "Dockerfile Path"

https://ithelp.ithome.com.tw/upload/images/20231218/201585122TFhHU7Kml.png

啟動 MySql Container

docker run --name "Container Name" -p 3306:3306 mysql

MySql Container 啟動完成,我們直接連線看看
https://ithelp.ithome.com.tw/upload/images/20231218/2015851241T1Pl00o2.png

  • 按照圖片輸入Database參數
  • 因為我們是用root登入所以密碼要輸入MYSQL_ROOT_PASSWORD

按測試連線如果是跟下面圖片一樣代表有連線成功
https://ithelp.ithome.com.tw/upload/images/20231218/201585123Ihb4TbAjx.png

去確認是否有Database ItDB
https://ithelp.ithome.com.tw/upload/images/20231218/20158512YR7sAnlcPn.png

我進入 MySql Container 查看是否與Dockerfile設計的一樣

docker exec -it "Container Name" bash

查看起始路徑是否為/var/lib/mysql

pwd

https://ithelp.ithome.com.tw/upload/images/20231218/20158512GAcZPNiqeP.png

可以驗證我們Dockerfile
https://ithelp.ithome.com.tw/upload/images/20231218/20158512T3i9xMaHCm.png

查看/etc/my.cnf

cat /etc/my.cnf

https://ithelp.ithome.com.tw/upload/images/20231218/20158512tHXWgx0Ejs.png

可以驗證我們Dockerfile
https://ithelp.ithome.com.tw/upload/images/20231218/20158512fYqcXID5tF.png

查看/var/log/mysqld.log

cat /var/log/mysqld.log

可以看到Mysql的log紀錄
https://ithelp.ithome.com.tw/upload/images/20231218/20158512sfmwVfDhrD.png


直接實作一步一步驗證 Dockerfile 的用法,自己所設計的 Dockerfile ,並且有實體的資訊呈現在眼前,是不是又更清楚了解,當然這些參數設定只是一小塊,當然有更多可以自己設定,這就要依自己的需求去找資料,不可能一次就能建立好自己所想要的 Dockerfile,所以要有耐心的找資料去解決你的問題/images/emoticon/emoticon12.gif


上一篇
Day10 - 跟著菜鳥一起學習DockerFile
下一篇
Day12 - 菜鳥們學以致用DockerFile Redis篇
系列文
跟著菜鳥手把手用Docker建立服務30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言